package sellControllers

import (
	"WEB/models"
	"WEB/models/sellModel"
	"fmt"
	"github.com/astaxie/beego/orm"
	"path"
	"strconv"
)

type SellStoreController struct {
	SellBaseController
}

// @router /sell/store/ [get]
func (this *SellStoreController) GetStore() {

	this.TplName = "sell/store.html"
}

// @router /sell/store/index [get]
func (this *SellStoreController) GetIndex() {
	this.GetStore()
}

// @router /sell/store/reg [get]
func (this *SellStoreController) GetReg() {
	this.TplName = "sell/regStore.html"
}

// @router /sell/store/reg [post]
func (this *SellStoreController) PostReg() {
	var store models.Stores
	if err := this.ParseForm(&store); err != nil {
		panic(nil)
	}
	newOrm := orm.NewOrm()
	sql := models.QueryByEqualField(store, "StoresName")
	var temp models.Stores
	err := newOrm.Raw(sql, store.StoresName).QueryRow(&temp)
	if err != nil {
		sql = models.InsertWithoutPrimaryKey(store)
		value := models.GetFieldValue(store, models.IsPrimaryKey)
		_, err = newOrm.Raw(sql, value).Exec()
		if err != nil {
			panic(err)
		}
		sql = models.QueryByEqualField(store, "StoresName")
		newOrm.Raw(sql, store.StoresName).QueryRow(&temp)
		user := this.GetSession("sell_User").(sellModel.SellUser)
		user.UserStoreId = temp.StoresId

		sql = models.UpdateFieldsByPrimary(user, "UserStoreId")
		_, err = newOrm.Raw(sql, user.UserStoreId, user.UserId).Exec()

		if err != nil {
			panic(err)
		}
		this.SetSession("sell_User", user)
		this.SetSession("store", store)
		this.Redirect("/sell/index", 302)
	} else {
		this.Data["msg"] = "这个商店已经存在，请重新命名"
		this.TplName = "error.html"
	}
}

// @router /sell/store/manage
func (this *SellStoreController) GetManager() {

	this.TplName = "sell/storeManager.html"
}

// @router /sell/store/storeInfo [post]
func (this *SellStoreController) PostStoreInfo() {
	newDesc := this.GetString("storeinfo")
	if newDesc == "" {
		this.Data["json"] = "code:400"
	} else {
		newOrm := orm.NewOrm()
		store := this.GetSession("store").(models.Stores)
		sql := models.UpdateFieldsByPrimary(store, "StoresDescription")
		fmt.Println("sql:", sql)
		_, e := newOrm.Raw(sql, newDesc, store.StoresId).Exec()
		if e != nil {
			panic(e)
		}
		this.SetSession("store", store)
		this.Data["json"] = "code:200"
	}

	this.ServeJSON()
}

// @router /sell/store/upload/mainPic [post]
func (this *SellStoreController) PostMainPic() {
	file, header, e := this.GetFile("file")
	if e != nil {
		panic(e)
	}
	defer file.Close()
	store := this.GetSession("store").(models.Stores)
	newOrm := orm.NewOrm()
	sql := models.UpdateByPrimaryKey(store)
	fmt.Println(sql)
	fileName := strconv.Itoa(store.StoresId) + store.StoresName + path.Ext(header.Filename)
	store.StoresMainpic = fileName
	newOrm.Raw(sql, models.GetFieldValue(store, models.IsPrimaryKey), models.GetFieldValue(store, models.IsNotPrimaryKey)).Exec()
	e = this.SaveToFile("file", path.Join("static/upload", fileName))
	if e != nil {
		panic(e)
	}
	this.SetSession("store", store)
	this.ServeJSON()
}

// @router /sell/store/upload/loopPic1 [post]
func (this *SellStoreController) PostLoopPic1() {
	file, header, e := this.GetFile("file")
	if e != nil {
		panic(e)
	}
	defer file.Close()
	store := this.GetSession("store").(models.Stores)
	newOrm := orm.NewOrm()
	sql := models.UpdateByPrimaryKey(store)
	fmt.Println(sql)
	fileName := strconv.Itoa(store.StoresId) + store.StoresName + "Loop1" + path.Ext(header.Filename)
	store.StoresLoopPic1 = fileName
	newOrm.Raw(sql, models.GetFieldValue(store, models.IsPrimaryKey), models.GetFieldValue(store, models.IsNotPrimaryKey)).Exec()
	e = this.SaveToFile("file", path.Join("static/upload", fileName))
	if e != nil {
		panic(e)
	}
	this.SetSession("store", store)
	this.ServeJSON()
}

// @router /sell/store/upload/loopPic2 [post]
func (this *SellStoreController) PostLoopPic2() {
	file, header, e := this.GetFile("file")
	if e != nil {
		panic(e)
	}
	defer file.Close()
	store := this.GetSession("store").(models.Stores)
	newOrm := orm.NewOrm()
	sql := models.UpdateByPrimaryKey(store)
	fmt.Println(sql)
	fileName := strconv.Itoa(store.StoresId) + store.StoresName + "Loop2" + path.Ext(header.Filename)
	store.StoresLoopPic2 = fileName
	newOrm.Raw(sql, models.GetFieldValue(store, models.IsPrimaryKey), models.GetFieldValue(store, models.IsNotPrimaryKey)).Exec()
	e = this.SaveToFile("file", path.Join("static/upload", fileName))
	if e != nil {
		panic(e)
	}
	this.SetSession("store", store)
	this.ServeJSON()
}

// @router /sell/store/upload/loopPic3 [post]
func (this *SellStoreController) PostLoopPic3() {
	file, header, e := this.GetFile("file")
	if e != nil {
		panic(e)
	}
	defer file.Close()
	store := this.GetSession("store").(models.Stores)
	newOrm := orm.NewOrm()
	sql := models.UpdateByPrimaryKey(store)
	fmt.Println(sql)
	fileName := strconv.Itoa(store.StoresId) + store.StoresName + "Loop3" + path.Ext(header.Filename)
	store.StoresLoopPic3 = fileName
	newOrm.Raw(sql, models.GetFieldValue(store, models.IsPrimaryKey), models.GetFieldValue(store, models.IsNotPrimaryKey)).Exec()
	e = this.SaveToFile("file", path.Join("static/upload", fileName))
	if e != nil {
		panic(e)
	}
	this.SetSession("store", store)
	this.ServeJSON()
}
